//
//  StoreDetailsViewController.m
//  WeddingStoreFinder
//
//  Created by Macdev on 11/20/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "StoreDetailsViewController.h"
#import "Dress.h"
#import "RobeDetailsViewController.h"
#import "AppDelegate.h"
#import "MapViewController.h"
#import "ZoomLevel.h"
#import "Utils.h"

@interface StoreDetailsViewController()

@property (nonatomic, retain) NSArray *dressList;

@end


@implementation StoreDetailsViewController
@synthesize storeNameLabel;
@synthesize addressLabel;
@synthesize cityLabel;
@synthesize zipcodeLabel;
@synthesize callStoreButton;
@synthesize dressesLabel;
@synthesize dressList, poi;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void) dealloc {
	[storeNameLabel release];
	[addressLabel release];
	[cityLabel release];
	[zipcodeLabel release];
	[callStoreButton release];
	[dressesLabel release];
	[dressList release];
	[poi release];
	[super dealloc];
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
	
	self.dressList = [poi.dresses allObjects];
	self.title = poi.poiName;
	self.storeNameLabel.text = poi.poiName;
	self.addressLabel.text = poi.address;
	self.zipcodeLabel.text = poi.zipCode;
	self.cityLabel.text = poi.city;
	
	[self._tableView reloadData];
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
	
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)viewDidUnload
{
	[self setStoreNameLabel:nil];
	[self setAddressLabel:nil];
	[self setCityLabel:nil];
	[self setZipcodeLabel:nil];
	[self setCallStoreButton:nil];
	[self setDressesLabel:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
	self.navigationController.navigationBarHidden = NO;
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
	return YES;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
	
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
	
    // Return the number of rows in the section.
    return [dressList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    Dress *dress = [dressList objectAtIndex:indexPath.row];
	cell.textLabel.text = dress.dressDesc;
	cell.selectionStyle = UITableViewCellSelectionStyleNone;
	cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    // Configure the cell...
    
    return cell;
}

/*
 // Override to support conditional editing of the table view.
 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the specified item to be editable.
 return YES;
 }
 */

/*
 // Override to support editing the table view.
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 {
 if (editingStyle == UITableViewCellEditingStyleDelete) {
 // Delete the row from the data source
 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
 }   
 else if (editingStyle == UITableViewCellEditingStyleInsert) {
 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
 }   
 }
 */

/*
 // Override to support rearranging the table view.
 - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
 {
 }
 */

/*
 // Override to support conditional rearranging of the table view.
 - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the item to be re-orderable.
 return YES;
 }
 */

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.
    
	RobeDetailsViewController *detailViewController = [[RobeDetailsViewController alloc] initWithNibName:@"RobeDetailsViewController" bundle:nil];
     
	Dress *dress = [dressList objectAtIndex:indexPath.row];
	detailViewController.dress = dress;
	[self.navigationController pushViewController:detailViewController animated:YES];
	[detailViewController release];
     
}

#pragma mark - IBAction methods

- (IBAction)callStorePressed:(id)sender {
	if ([Utils platformType] == kPlatform_iPhone) {
		[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", poi.phone]]];
	} else if ([Utils platformType] == kPlatform_iPhoneSimulator || [Utils platformType] == kPlatform_iPad || [Utils platformType] == kPlatform_iPod) {
		NSString *alertMsg = [NSString stringWithFormat:@"Really? From an %@? Seriously man...", [Utils platformName]];
		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:alertMsg delegate:nil cancelButtonTitle:nil otherButtonTitles:@"I am sorry", nil, nil];
		[alert show];
		[alert release];
	}
	
}

- (IBAction)showMapPressed:(id)sender {
	AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
	MapViewController *mapViewController = appDelegate.mapViewController;
	UITabBarController *tabCont = appDelegate.tabbarController;
	if (tabCont.selectedIndex != 0) {
		tabCont.selectedIndex = 0;
	}
	[mapViewController.navigationController popToRootViewControllerAnimated:NO];
	CLLocationCoordinate2D poiPoint;
	poiPoint.longitude = [poi.longitude doubleValue];
	poiPoint.latitude = [poi.latitude doubleValue];
	[self.navigationController popViewControllerAnimated:NO];
	[mapViewController.mapView setCenterCoordinate:poiPoint zoomLevel:15 animated:YES];
	[mapViewController.mapView selectAnnotation:poi animated:YES];
}
@end
